Application blueprints based on service templates to deploy applications in different cloud environments

ABSTRACT

Disclosed examples to configure an application blueprint involve, during a design phase, binding a service template to a node of the application blueprint. The application blueprint defines an application to be deployed in a cloud environment. The service template is mapped to a plurality of services that are selectable during a runtime phase to implement the node in the cloud environment. During the runtime phase, a first one of the services is bound to the node of the application blueprint based on the first one of the services being mapped to the service template and being selected during the runtime phase. An application deployment profile is generated based on the binding of the first one of the services to the node.

RELATED APPLICATIONS

Benefit is claimed under 35 U.S.C. 119(a)-(d) to Foreign applicationSerial No. 3119/CHE/2014 filed in India entitled “APPLICATION BLUEPRINTSBASED ON SERVICE TEMPLATES TO DEPLOY APPLICATIONS IN DIFFERENT CLOUDENVIRONMENTS”, filed on Jun. 26, 2014, by VMware, Inc., which is hereinincorporated in its entirety by reference for all purposes.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to cloud computing and, moreparticularly, to designing application blueprints based on servicetemplates to deploy applications in different cloud environments.

BACKGROUND

In cloud computing design, numerous tools exist to create and deployapplications in cloud environments. For example, applicationprovisioning tools facilitate cloud computing designers to create andstandardize application deployment topologies on infrastructure clouds.Some application provisioning tools include graphical user interfaces(GUIs) that enable designers to generate application deploymenttopologies called application blueprints, which define structures andconfigurations of applications. Once a blueprint is designed to definean application, the blueprint can be used to deploy multiple instancesof the application to many cloud environments.

A blueprint binds nodes of an application to particular services.Instances of the application will be deployed based on the servicebindings defined in the blueprint. When a different service is desiredfor an instance of the application, a new blueprint is defined to bindthe desired different service to a corresponding node of theapplication. In this manner, two different blueprints can be defined sothat separate instances of an application can be deployed usingdifferent sew ices for the two blueprints.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example application provisioning manager to generateapplication blueprints that define applications based on servicetemplates to facilitate binding different services to differentinstances of an application deployed based on the same applicationblueprint.

FIG. 2 depicts an example graphical user interface of blueprint editorof FIG. 1 to design application blueprints based on service templates.

FIG. 3 depicts another example graphical user interface of the blueprinteditor of FIG. 1 to select template mapping options to map ser ices toservice templates for use in designing application blueprints.

FIG. 4 depicts another example graphical user interface of the blueprinteditor 4 of FIG. I to define configuration properties of servicetemplates.

FIG. 5 depicts an example graphical user interface of the blueprinteditor of FIG. 1 to bind service templates to nodes in applicationblueprints.

FIG. 6 depicts an example graphical user interface of a deploymentprofile generator of the application provisioning manager of FIG. 1 toselect services at runtime to deploy applications.

FIG. 7 depicts an example application deployer of FIG. 1 deployingmultiple applications based on different application deployment profilesgenerated using the same application blueprint.

FIG. 8 is a flow diagram representative of example machine readableinstructions that may be executed to implement the example blueprinteditor of FIG. 1 to map services to service templates.

FIG. 9 is a flow diagram representative of example machine readableinstructions that may be executed to implement the example applicationprovisioning manager of FIG. 1 to design application blueprints based onservice templates at a design phase and to select particular servicesfor applications at a runtime phase when the applications are beingdeployed.

FIG. 10 is a block diagram of an example processor system that may beused to Implement the example application provisioning manager of FIG.1.

DETAILED DESCRIPTION

Prior application provisioning managers enable designing applications bydragging and dropping different components of an application onto anapplication blueprint (e.g., a blueprint) in a graphical user interface(GUI) of a blueprint editor. In this manner, designers ofcloud-deployable applications can create blueprints that can besubsequently used numerous times to deploy instances of the sameapplication in numerous deployment environments. That is, a blueprintdesigned Using such a prior application provisioning manager can be usedto deploy a first instance of an application in a first physical cloudenvironment, and deploy a second instance of the application in a secondphysical cloud environment. However, such prior application provisioningmanagers generate blueprints by fixedly binding nodes of an applicationto particular services such that a blueprint is useful to deployapplications based only on the services that were hound to theapplication at a design phase of the blueprint. Such prior applicationprovisioning managers do not allow configuring blueprints (e.g., at thetime the blueprints are initially designed) so that services used todeploy an application can be changed without re-designing the blueprintor creating a new blueprint defining bindings of different services forthe application. That is using prior application provisioning managers,when one or more different services are desired for an instance of anapplication, a new blueprint is defined to bind the desired differentservice(s) to a corresponding node or nodes of the application. As such,two different blueprints must be defined so that separate instances ofan application can be deployed using services that are different betweenthe two blueprints.

Examples disclosed herein enable configuring a blueprint to define anapplication using service templates o that the actual service used todeploy an application in a cloud environment can be selected or changedat run-time based on, for example, the cloud environment in which theapplication will be deployed. In this manner, a blueprint can beflexibly configured once (e.g., one initial configuration) withoutfixedly binding the blueprint to particular services so that theblueprint can subsequently be used numerous times to deploy differentinstances application bayed on services selected at run-time for thesame blueprint. In examples disclosed herein, such flexibility to enableselecting different services for different applications that aredeployed based on the same blueprint is achieved by binding servicetemplates to nodes that define an application.

Example service templates disclosed herein are configured at a designphase to allow binding any of a number of services to an application atrun-time when the application is being deployed. For example, adeveloper may design a multi-tier clustered application that thedeveloper desires to deploy in a development environment in which theapplication is to use a particular service (e.g., an Apache loadbalancer) for a particular node (e.g., a load balancer node) of theapplication, and may desire to deploy another instance of the sameapplication in a production environment in which the application is touse a different service (e.g., an F5 load balancer from F5 Networks,Inc.) for the same node (e.g., the load balancer node) of theapplication. Using prior application provisioning managers to achievesuch different deployments using different services, the developer wouldneed to create two different blueprints to define the two applicationsso that one blueprint is fixedly bound to the Apache service fordeploying the load balancer node of one application and so that theother blueprint is fixedly bound to the F5 service for deploying theload balancer node of the other application. Designing separateblueprints in this manner to achieve application deployments usingdifferent services often introduces doubt as to whether a blueprintdesigned to deploy an application in a production deployment can betrusted to function in the same manner as a blueprint used to developthe application in a development environment. That is, although anapplication is developed and tested to satisfaction in a developmentenvironment based on one blueprint, subsequently designing a separateblueprint to deploy the developed application in a productionenvironment creates a situation in Which the new blueprint forproduction provides little or no assurance of how it will perform todeploy the application in a production environment. That is theblueprint used to develop the application in a development environmentis used and tested numerous times during development, while the newlydesigned blueprint for production may not have such an arduously testedhistory.

Unlike prior techniques that require developing two or more separateblueprints to deploy applications using different services, examplesdisclosed herein use service templates to develop blueprints at a designphase so that a same blueprint can be used to deploy different instancesof an application using different services selected at run-time when theapplications are being deployed. In some examples, techniques disclosedherein are useful for using a blueprint at a design phase to develop andtest an application based on particular services in a development cloudenvironment and subsequently using the same tested and approvedblueprint at runtime to deploy the application based on one or moredifferent services in a production cloud environment. Such use of asingle blueprint to deploy in different cloud environments using one ormore different services provides numerous advantages over priortechniques. An example advantage is that a blueprint that is tested andapproved in a development cloud environment can be used to deploy anapplication in a production cloud environment with assurances of how theblueprint will operate when deploying the application since it has beenpreviously used and tested a numerous times during development. Anotherexample advantage is that developers do not. have to develop, update,maintain, and test multiple separate blueprints for numerousapplications that differ in the types of services bound to eachapplication. Such updating and maintaining of separate blueprints can betedious time consuming, and error prone because a developer must becertain that all aspects that are common to the blueprints are updatedin the same manner across all blueprints. In addition, the developermust test all of the blueprints when any change is made to the commonaspects. Using examples disclosed herein to develop blueprints usingservice templates that allow binding different services to differentaspects of an application at runtime allow a developer to develop,update, maintain, and test a single blueprint, thereby reducing time,resources, and possibilities of errors when developing, deploying, andmaintaining applications.

Examples disclosed herein may be used to configure applicationblueprints using service templates. Examples disclosed herein involveduring a design phase, binding a service template to a node of theapplication blueprint. In examples disclosed herein, the applicationblueprint defines an application to be deployed in a cloud environment.In examples disclosed herein, the service template is mapped to aplurality of services that are selectable during a runtime phase toimplement the node in the cloud environment. In examples disclosedherein, a first one of the services is hound to the node of theapplication blueprint during the runtime phase based on the first one ofthe services being mapped to the service template and being selectedduring the runtime phase. In examples disclosed herein, an applicationdeployment profile is generated during the runtime phase based on thebinding of the first one of the services to the node.

In some examples disclosed herein, the first one of the services ismapped to the service template prior to the design phase. In some suchexamples, the mapping of the first one of the services to the servicetemplate prior to the design phase is indicative of the first one of theservices being selectable during the runtime phase for binding to thenode associated with the service template.

In some examples disclosed herein, configuration properties areassociated with the deployment profile. In some such examples, theconfiguration properties include dependency properties to configureinter-node dependencies between the node and other nodes of theapplication blueprint.

In some examples disclosed herein, the application is deployed in acloud environment based on configuring a virtual machine to host theapplication using configuration properties associated with the servicetemplate.

In some examples disclosed herein, the application blueprint is storedduring the design phase, and the application blueprint is used one ormore times during a runtime phase. For example, the applicationblueprint is used during the runtime phase to generate a firstdeployment profile to deploy a first application using a first serviceselected based on the service template to implement the node, and togenerate a second deployment profile to deploy a second applicationusing a second service based on the service template to implement thenode. In some such examples, the second service is different from thefirst service.

In some examples disclosed herein, the service template is preconfiguredprior to the design phase to include dependency properties defininginter-node dependencies between the node and other nodes.

In some examples disclosed herein, the service template is preconfiguredprior to the design phase to include values of properties that areconfigured to be the same for the plurality of the services that areselectable during the runtime phase to implement the node in the cloudenvironment.

FIG. 1 depicts an example application provisioning manager 100 (e.g., anapplication director) to generate application blueprints (e.g.,.blueprints) using service templates to use a same blueprint to deploydifferent instances of an application using services that are differentbetween the instances of the application. The different instances of theapplication can be deployed across multiple deployment environ eats(e.g., different deployment environments of the same cloud provider orof different cloud providers). In the illustrated example, the exampleapplication provisioning manager 100 includes an example blueprinteditor 102, an example deployment profile generator 104, and an exampleapplication deployed 106. The example blueprint editor 102 is providedto receive user inputs and generate an example application blueprint 108(e.g., a user-designed application blueprint) that is based on auser-specified configuration that binds nodes (e.g., example nodes 502,504, 506 of FIG. 5) of an application to service templates 110.

The example service templates 110 are data structures that storeconfiguration information to abstract services at the blueprint level sothat a developer (e.g., a developer 130 of FIG. 1) does not need to bindparticular services to the application blueprint 108 at a design phase.Instead, the application blueprint 108 can be flexibly designed at thedesign phase so that particular services for applications can beselected, bound, and configured for deployment at runtime. For example,a service template 110 is a placeholder for an actual service. Theexample service template 110 can be assigned or bound to a node of anapplication at the design phase so that any of a number of particularservices can be selected and bound at runtime when the application is tobe deployed. That is, instead of specifying a particular service for aparticular node in the application blueprint 108 at the design phase,the example service template 110 an be selected via the blueprint editor102 to represent a service (or a service placeholder) at an abstractlevel for the particular node.

Although services are represented at an abstract level by exampleservice templates 110 to provide flexibility in later selectingparticular services for corresponding nodes of the example applicationblueprint 108 at runtime, the service templates 110 expose configurationproperties 111 that include dependency properties and common attributes.In examples disclosed herein, dependency properties define dependenciesbetween nodes (e.g., inter-node dependencies) of an application. Forexample, communications, control, or information processing at one nodemay depend on information or activities at another node. In examplesdisclosed herein, common attributes or properties are properties thatare generally applicable to all services that may be selected for aparticular template and configurable to be the same across thoseservices (e.g., properties generally applicable to any load balancerservice that may be selected for a load balancer template, propertiesgenerally applicable to any application server service that may beselected for an application server service template, propertiesgenerally applicable to any database service that may be selected for adatabase service template, etc.). In examples disclosed herein, theconfiguration information 111 is information to configure virtualmachines (e.g., the VMs 126 and 128 of FIG. 1) to host correspondingnodes of an application. By snaking the configuration properties 111accessible from the example service templates 110, a developer candefine inter-node dependencies at a design phase to establishdependencies between nodes of the application blueprint 108 and so thatthe developer can configure as many common attributes as possible at thedesign phase (e.g., can define dependencies and configure commonattributes that are applicable to any particular service that may beselected at runtime). In this manner, when particular services areselected at runtime, much of the configuration to bind the particularservices to their corresponding nodes of an application is alreadycomplete. By configuring the example service templates 110 to provideaccess to the configuration properties 111, the service templates 110can be used to configure valid application blueprint 108 at the designphase that can be used to deploy numerous applications at runtime usingdifferent services across the deployed applications. In the illustratedexample, some of the service templates 110 are multi-tier servicetemplates because they enable designing multi-tier applicationsincluding multiple nodes and dependencies between the nodes. In theillustrated example, the application provisioning manager 100 isprovided with an example service templates repository 112 to storeservice templates such as the service templates 110 of the illustratedexample. The example service templates repository 112 may be implementedusing any suitable memory (e.g., random access memory 1014 of FIG. 10,local memory 1013 of FIG. 10, mass storage memory 1028 of FIG. 10, etc.)to store computer readable data. In some examples, the service templatesrepository 112 is separate from the application provisioning manager100.

Applications (e.g., applications 114, 116) are typically developed usingmulti-tier architectures in which functions such as presentation,application processing, and data management are logically separatecomponents. For example, an enterprise's custom banking application thathas a multi-tier architecture may use a cluster of application servers(e.g., Moss Application Servers) to execute in a scalable runtimeenvironment, a relational database management system (e.g., MySQL) tostore account data, and a load balancer to distribute network trafficfor robustness. To deploy such a multi-tier application, a developer,who understands the architecture of the application, must coordinatewith a system administrator, who controls access to computing resources,to determine which computing resources (e.g., computing, networking, andstorage) and software services (e.g., software packages) should beprovisioned to support execution of the application.

Blueprints, such as the example application blueprint 108, define thestructure of an application, enable the use of standardized applicationinfrastructure components, and sp installation dependencies (e.g.dependencies between different nodes of an application) and defaultconfigurations. Blueprints define the topology for deployment in aninfrastructure-agnostic manner to be portable across different cloudcomputing environments. The application blueprint 108 of the illustratesexample may be assembled out of items from a catalog not shown), whichis a listing of available virtual computing resources (e.g., virtualmachines (VMs), networking, storage, etc.) that r may be provisioned bycloud computing platform providers (e.g., one or more cloud providers ofthe cloud environments 118 a, 118 b) and available applicationcomponents (e.g., software services, scripts, code components,application-specific packages) that may be installed on the provisionedvirtual computing resources. An administrator 124 (e.g., IT or systemadministrator) may pre-populate and customize a catalog by enteringspecifications, configurations, properties, and other details about eachitem in the catalog. The application blueprint 108 may define one ormore dependencies between application components to indicate aninstallation order of the application components during deployment. Forexample, since a load balancer node of an application usually cannot beconfigured until a web application is up and running, the applicationblueprint 108 dray specify a dependency from an Apache service (used toimplement the load balancer node of the application) to a webapplication code package.

In examples disclosed herein, during a design phase, the applicationprovisioning manager 100 of the illustrated example enables the exampleblueprint editor 102 to provide a set of service templates (e.g., theservice templates 110) stored in the service templates repository 112for different services (e.g., a load balancer service, an applicationserver service, a database service, etc.). In the illustrated example,the application blueprint 108 that is based on the service templates 110is useable to select different particular services for differentinstances of an application so that, for example, the applicationblueprint 108 is useable to deploy different instances of an applicationshown as application A 114 and application B 116 in FIG. 1 across thesame or different cloud environments (e.g., one or more deploymentenvironments of the same or different cloud providers) shown as examplecloud environment A 118 a and example cloud environment B 118 b. Tostore application blueprints 108 generated at a design phase so that theblueprints 108 can be used during a runtime phase, the applicationprovisioning, manager 100 is provided with an example blueprintrepository 113. The example blueprint repository 113 may be implementedusing any suitable memory (e.g., the random access memory 1014 of FIG.10, the local memory 1013 of FIG. 10, the mass storage memory 1028 ofFIG. 10, etc.) to store computer readable data. In some examples, theexample blueprint repository 113 is separate from the applicationprovisioning manager 100.

The example deployment profile generator 104 of FIG. 1 is provided togenerate example deployment profiles 120 (e.g., an applicationdeployment profile) based on the example application blueprint 108 andthe service templates 110 bound to the application blueprint 108. Insome examples, a same deployment profile 120 is configured based on theapplication blueprint 108 to deploy both of the applications 114, 116 ifboth of the applications 114, 116 use the same services. In someexamples, different deployment profiles 120 are configured based on thesame application blueprint 108 to deploy the applications 114, 116 usingdifferent services for each of the example applications 114, 116. Thatis, one of the deployment profiles 120 is used to bind one service(e.g., an Apache load balancer service) to a node (e.g., a load balancernode) for use with the application 114, and another deployment profile120 is used to bind a different service (e.g., an F5 load balancerservice) to the same node (e.g., the load balancer node) for use withthe application 116.

In the illustrated example, the application provisioning manager 100 isalso provided with an example profile repository 122 to store deploymentprofiles such as the example deployment profiles 120 for subsequent useat deployment true to deploy, for example, the applications 114, 116.The example profile repository 122 may be implemented using any suitablememory (e.g., the random access memory 1014 of FIG. 10, the local memory1013 of FIG. 10, the mass storage memory 1028 of FIG. 10, etc.) to storecomputer readable data. Its some examples, the profile repository 122 isseparate from the application provisioning manager 100.

At runtime, when a deployment profile 120 is created to deploy acorresponding one of the applications 114, 116 in one of the cloudenvironments 118 a, 118 b the service templates 110 used to design theapplication blueprint 108 can be mapped to a particular service. Themapped service will be associated with dependency properties (e.g.,inter-node dependencies) defined in the application blueprint 108 at adesign phase. In the illustrated example, the deployment profile 120 isused to assign values at runtime to the dependency properties defined inthe application blueprint 108 so that inter-node dependencies betweennodes of the application 114, 116 are valid so that the application 114,116 is deployed to operate as intended (e.g., deployed in a manner thatsatisfies dependencies).

In the illustrated example, the example deployment profiles 120 are datastructures generated using the example application blueprint 108 andstore configuration information to deploy applications based onparticular sets ices selected to ii implement nodes of the applicationblueprint 108. In some examples, the example deployment profiles 120 aredistributed as local deployment plans having a series of tasks to beexecuted by virtual machines (VMs) (e.g., VMs 126 and 128) provisionedin different cloud computing environments (e.g., the cloud environments118 a, 118 b). Each VM 126, 128 of the illustrated example coordinatesexecution of each task with a centralized deployment module to ensurethat tasks are executed in an order that complies with inter-nodedependencies specified in the example application blueprint 108. In theillustrated example of FIG. 1, the application A 114 runs on an exampleVM 126 in the deployment environment A 118 a, and the application B 116runs on an example VM 128 in the deployment environment B 118 b. In theillustrated example, the VM 126 is configured based on one of thedeployment profiles 120 to deploy the application 114 and the VM 128 isconfigured based on another one of the deployment profiles 120 to deploythe application 116 so that one or more services can be differentbetween the applications 114, 116.

The example application deployer 106 is provided to define networkconfiguration details for the example deployment profile 120 atdeployment time. For example, when the developer 130 is ready to deploythe applications 114, 116 in the deployment environments 118 a, 118 b,the developer 130 can define network mapping details for the cloudenvironments 118 a, 118 b to configure the VMs 126, 128. For example,the VM 126 is configured to host the application 114, and the VM 128 isconfigured to host the applications 116. For example, the exampleapplication deployer 106 is provided with an example cloud abstractionlayer (CAL) module 131 that communicates network mapping details andconfiguration information to target cloud providers (e.g., cloudproviders of the deployment environments 118 a, 118 b) to provision theVMs 126, 128 that are to host the applications 114, 116.

The example application provisioning manager 100 (an applicationdirector) may be running in one or more VMs acid may be used by thedeveloper 130 of an enterprise 132 to generate the example applicationblueprint 108 based on the example service templates 110 and to generatethe ex ample deployment profiles 120 based on the example applicationblueprint 108 to configure a id deploy the applications 114, 116 in thedeployment environments 118 a, 118 b. For example, the developer 130 mayinteract with the blueprint editor 102 to create the applicationblueprint 108, may interact with the deployment profile generator 104 tocreate the deployment profiles 120, and may interact with theapplication deployer 106 to define network configuration details todeploy the applications 114, 116.

While an example manner of implementing the applications provisioningmanager 100 is illustrated in FIG. 1, one or more of the elements,processes and/or devices illustrated in FIG. 1 may be combined, divided,re-arranged, omitted, eliminated anchor implemented in any other way.Further, the example blueprint editor 102, the example deploymentprofile generator 104, the example application deployer 106, the exampleCAL module 131 and/or, more generally, the example applicationprovisioning manager 100 of FIG. 1 may he implemented by hardware,softsware, firmware and/or any combination of hardware, software and/orfirmware. Thus, for example, any of the example blueprint editor 102,the example deployment profile generator 104, the example applicationdeployer 106, the example CAL module 131 and/or, more generally, theexample application provisioning manager 100 of FIG. 1 could beimplemented by one or more analog or digital circuit(s), logic circuits,programmable processor(s), application specific integrated circuit(s)(ASIC(s)), programmable logic device(s) (PLD(s)) and/or fieldprogrammable logic device(s) (FPLD(s)). When reading any of theapparatus or system claims of this patent to cover a purely softwareand/or firmware implementation, at least one of the example blueprinteditor 102, the example deployment profile generator 104, the exampleapplication deployer 106, and/or the example CAL module 131 is/arehereby expressly defined to include a tangible computer readable storagedevice or storage disk such as a memory, a digital versatile disk (DVD)a compact disk (CD), A Blu-ray disk, etc, storing the software and/orfirmware. Further still, the example application provisioning manager100 of FIG. 1 may include one or more elements, processes and/or devicesin addition to, or instead of, those illustrated in FIG. 1, and/or mayinclude more than one of any or all of the illustrated elements,processes and devices.

FIG. 2 depicts an example blueprint editor graphical user interface(GUI) 200 of the example blueprint editor 102 of FIG. 1. The exampleblueprint editor GUI 200 is provided to the example blueprint editor 102to enable users (e.g., the developer 130 of FIG. 1) to designapplication blueprints (e.g., the application blueprint 108 of FIG. 1)based on service templates (e.g., the service templates 110 of FIG. 1).In the illustrated example, the blueprint editor GUI 200 shows aplurality of application blueprints 202, including the applicationblueprint 108 of FIG. 1. In the illustrated example, to enable a catalogadministrator (e.g., the administrator 124 of FIG. 1) to design servicetemplates (c.a., the service templates 110 of FIG. 1), the blueprinteditor GUI 200 is provided with a user-selectable ‘Service Templates’GUI control 204 (e.g., shown as a user-selectable option in a drop-downmenu) that is displayed for user selection. When the example blueprinteditor 102 detects a user-selection of the example ‘Service Templates’GUI control 204, the blueprint editor 102 presents graphical userinterfaces as described below in connection with FIGS. 3 and 4 to enablethe administrator 124 to design service templates (e.g., the servicetemplates 110 of FIG. 1) that a developer (e.g., the developer 130 ofFIG. 1) can subsequently use to design application blueprints 202.

FIG. 3 depicts an example template mapping options GUI 300 of theblueprint editor 102 of FIG. 1 to select template mapping options toWrap services to service templates (e.g., the service templates 110 ofFIG. 1) for use in designing application blueprints (e.g., theapplication blueprints 108 of FIG. 1). The example template mappingoptions GUI 300 is presented by the blueprint editor 102 after detectinga user-selection of the ‘Service Templates’ GUI control 204 of FIG. 2 toenable a user ( the administrator 124 of FIG. 1) to design servicetemplates 110 by mapping the example service templates 110 to servicesthat are selectable at a runtime phase to implement different nodes ofan application. For example, the administrator 124 may design a servicetemplate 110 that can be subsequently used by the developer 130 (FIG. 1)to design the application 108 (FIG. 1). To design an example servicetemplate 110 in the illustrated example, the administrator 124 selectswhich services to associate with the example service template 110. Forexample, the administrator 124 may select 1, 2, 3, or any number ofservices. In this manner, when the developer 130 designs the exampleapplication blueprint 108 with the example service template 110, theservice template 110 is associated with numerous selectable servicesthat the developer can subsequently select from at runtime to deploy anapplication 114. 116 (FIG. 1). That is, as discussed above, the servicetemplate 110 operates as a placeholder for numerous possible servicesthat are subsequently selectable at runtime based on the servicetemplate 110 being bound to a node of the application blueprint 108.

To enable mapping services to service templates 110, the exampletemplate mapping options GUI 300 is provided with a listing of theexample service templates 110 a-c and example user-selectable services302 that are available for mapping to the service templates 110 a-c. Inthe illustrated example, ones of the user-selectable services 302 areshown as selected for mapping to corresponding ones of the servicetemplates 110 a-c. For example, an Apache LB (load balancer) service andan F5 LB service are selected for mapping to an example load balancertemplate 110 a as shown in FIG. 3. Thus, if the load balancer template110 a is used to design an application blueprint, the developer 130 willbe able to select the Apache load balancer service or the F5 loadbalancer service for a corresponding load balancer node (e.g., the loadbalancer node 502 of FIG. 5) at runtime to deploy an application basedon a selected one of the Apache load balancer service or the ES loadbalancer service to implement the load balancer node. In the illustratedexample, a TS server service and a JBOSS service are, selected formapping to an application server (app server) template 110 b, but aTomcat service is not selected for mapping. As such, using the appserver template 110 b to design the example application blueprint 108enables he developer 130 to select from the TS server service and theMOSS service at runtime to implement an appserver node (.g., theappserver node 504 of FIG. 5), the Tomcat service will not be selectableto implement the app server node. For each of the example servicetemplates 110 a-c shown in FIG. 3 for which the administrator 124 electsto map services, the blueprint editor 102 provides the administrator 124with the option to configure the configuration properties 111 (FIG. 1)of that service template 110 a-c. In the illustrated example, theblueprint editor 102 provides an example GUI 400 of FIG. 4 describedbelow to configure such configuration properties 111.

FIG. 4 depicts an example template properties definitions GUI 400 of theblueprint editor 102 of FIG. Ito define the configuration properties 111(FIG. 1) of the service templates 110 (FIGS. 1 and 3). In theillustrated example of FIG. 4, the template properties definitions GUI400 enables the administrator 124 to configure dependency properties ofa service template 110 to define dependencies between nodes (e.g.,inter-node dependencies) of an application. The example templateproperties definitions GUI 400 also enables the administrator 124 toconfigure common attributes and properties of the example servicetemplate 110 that are the same across the different services shown inFIG. 3 as being mapped to the service template 110.

The example template properties definitions GUI 400 displaysconfiguration properties for the load balancer service template 110 a ofFIG. 3 so that the administrator 124 can configure common attributes andproperties and dependency properties to define dependencies between aload balancer node (e.g., the load balancer node 502 of FIG. 5) and anappserver node (e.g., the appserver node 504 of FIG. 5). In theillustrated example of FIG. 4, the load balancer template includesproperties strep as http_node_port configured with a value ofall(appserver: PORT_NUMBER), http_node_ips configured with a value ofall(appserver.ip), appsrv_routes configured with a value ofall(appserver: JBossAp pServer: JVM_ROUTE) and other eon ion propertiessuch as http_port/http_proxy_port so that all dependencies between theload balancer node and the appserver node are exposed in the applicationblueprint 108 when the example load balancer template 110 a is used todesign the application blueprint 108.

After the load balancer service template properties are defined usingthe example template properties definitions GUI 400, when a developer130 subsequently selects, for example, an Apache load balancer serviceor an F5 load balancer service at runtime for the load balancer servicetemplate 110 a in the application blueprint 108, the selected one of theApache load balancer service or the F5 load balancer service willinherit the values of the configuration properties 111 as defined in theexample template properties definitions GUI 400. In this manner, theselected one of the Apache load balancer service or the F5 load balancerservice can apply the defined configuration properties 111 in itsdefinition and use the configuration properties 111 in its scriptsduring runtime.

FIG. 5 depicts an example service template binding GUI 500 of theblueprint editor 102 of FIG. 1 to bind service templates 110 (FIGS. 1and 4) to nodes 502, 504, 506 in the application blueprint 108. Theexample service template binding GUI 500 displays the exampleapplication blueprint 108 including a load balancer node 502, anapplication server (appserver) node 504, and a database node 506. Theexample service template binding GUI 500 also displays a servicetemplate panel 510 including a user-selectable listing of the loadbalancer template 110, the app server template 110 b, and the database(DB) template 110 c. The service template binding GUI 500 of theillustrated example enables designing the application blueprint 108based on the service templates 110 a-c instead of needing to selectparticular services for the nodes 502, 504, 506 at a design phase. Forexample, the developer 130 (FIG. 1) can select the load balancertemplate 110 a from the service templates panel 510 to assign the loadbalancer template 110 a to the load balancer node 502. In theillustrated example, the load balancer service template 110 a may bedragged and dropped in the load balancer node 502 instead of aparticular service. In this manner, instead of needing to assign theparticular service (e.g., an Apache load balancer service or an F5 loadbalancer service) to the load balancer node 502 at the design phase, theservice template panel 510 enables flexibly configuring the nodes 502,504, 506 at the design phase based on the service templates 110 a-c sothat a number of particular services can be selected for deployment atruntime. This also enables using the sane application blueprint 108 todeploy different applications (e.g., the different applications 114, 116of FIG. 1) using services that are different between the applications.For example, using the same example application blueprint 108, theexample application 114 of FIG. 1 may he deployed using an Apache loadbalancer service for the example load balancer node 502, and the exampleapplication 116 of FIG. 1 may be deployed using an F5 load balancerservice for the example load balancer node 502.

The example service template binding GUI 500 of FIG. 5 shows that theblueprint editor 102 hinds the load balancer template 110 a to the loadbalancer node 502, binds the appserver template 110 b to the appservernode 504, and binds the database node 506 to the database template 110c. The example service template binding GUI 500 also shows an inter-nodedependencies indicator 514 between the load balancer template 110 a andthe appserver template 110 b, and inter-node dependencies indicator 516between the appserver node 504 and the database node 506. For example,the inter-node dependencies indicator 514 is indicative of dependencyproperties defined using the template properties definitions GUI 400 ofFIG. 4 for the load balancer service template 110 a, and the inter-nodedependencies indicator 506 is indicative of dependency properties thatare also definable using a template properties definitions GUI 400 forthe appserver service template 110 b.

FIG. 6 depicts an example deployment profile configuration GUI 600 ofthe deployment profile generator 104 of the application provisioningmanager 100 of FIG. 1 to generate deployment profiles 120 (FIG. 1) byselecting services at runtime for corresponding nodes (e.g., the nodes502, 504, 506 of FIG. 5) of an application blueprint (e.g., theapplication blueprint 108 of FIG. 1). The deployment profile generator104 displays the example deployment profile configuration GUI 600 at aruntime phase during deployment to enable the developer 130 (FIG. 1) toselect from different services 302 for each of the service templates 110a-c. For example, for each of the service templates 110 a-c, the exampledeployment profile configuration GUI 600 may display a drop-down list ofones of the services 302 of FIG. 3 mapped to the service templates 110a-c. In this manner, the developer 130 can select a particular service302 for each service template 110 a-c to implement a corresponding node502, 504, 506 of the application blueprint 108 (FIGS. 1 and 5) to deployan application (e.g., one of the applications 114, 116 of FIG. 1), Inthe illustrated example, an Apache load balancer service 302 a isselected for the load balancer template 110 a, a Tomcat applicationserver ser ice 302 b is selected for the appserver template 110 b, and adatabase service 302 c is selected for the database template 110 c. Insome examples, each of the e services 302 a-c can also be further editedafter they have been selected in the example deployment profileconfiguration GUI 600. Such further editing may be used to edit theconfiguration properties 111 of FIG. 1 or other configuration propertiesand scripts used by the services 302 a-c.

The example deployment profile generator 104 uses the example deploymentprofile configuration GUI 600 of FIG. 6 to enable the developer 130 togenerate any number of deployment profiles 120 based on the sameapplication blueprint 108. In this manner, numerous differentapplications 114, 116 having different services 302 can be deployedbased on the same application blueprint 108 by generating differentdeployment profiles that specify the different services 302. Forexample, using the same application blueprint 108, the exampledeployment profile configuration GUI 600 may be used to generate adeployment profile in which the load balancer node 502 (FIG. 5) isimplemented using an Apache load balancer service, and to generateanother deployment profile in which the load balancer node 502 isimplemented using an F5 load balancer service.

FIG. 7 depicts the example application deployer 106 of FIG. 1 deployingthe applications 114, 116 based on different application deploymentprofiles 120 a and 120 b generated using the same application blueprint108. The application deployment profiles 120 a and 120 b of theillustrated example are generated using the example deployment profileconfiguration GUI 600 described above in connection with FIG. 6 based onthe same application blueprint 108 and service templates 110. As shownin the illustrated example, the application 114 differs from theapplication 116 in the services selected for the nodes 502, 504, 506 ofthe applications 114, 116. For example, the load balancer node 502 ofthe application 114 is implemented using an Apache load balancer service702, the appserver node 504 of the application 114 is implemented usinga Tomcat application server service 704, and the database node 506 ofthe application 114 is implemented using a SQL database service 706.Different services are selected for the application 116 which includesthe load balancer node 502 of the application 116 being implementedusing an F5 load balancer service 710, the appserver node 504 of theapplication 116 being implemented using a MOSS application serverservice 712, and the database node 506 of the application 116 beingimplemented using an Oracle service 714. Although only two deploymentprofiles 120 a and 120 b are shown in FIG. 7, the example applicationdeployer 106 may be used to deploy any number of deployment profiles 120generated based on the same application profile 108.

Flowcharts representative of example machine readable instructions forimplementing the application provisioning manager 100 of FIG. 1 areshown in FIGS. 8 and 9. In these examples, the machine readableinstructions comprise programs for execution by a processor such as theprocessor 1012 shown in the example processor platform 1000 discussedbelow in connection with FIG. 10. The program may be embodied insoftware stored on a tangible computer readable storage medium such as aCD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), aBlu-ray disk, or a memory associated with the processor 1012, but theentire program and/or parts thereof could alternatively be executed by adevice other than the processor 1012 and/or embodied in firmware ordedicated hardware. Further, although the example programs are describedwith reference to the flowcharts illustrated in FIGS. 8 and 9, manyother methods of implementing the example application provisioningmanager 100 may alternatively be used. For example, the order ofexecution of the blocks may be changed, and/or some of the blocksdescribed may be changed, eliminated, or combined.

As mentioned above, the example processes of FIGS. 8 and 9 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a tangible computer readable storageMedium such as a hard disk drive, a flash memory, a read-only memory(ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, arandom-access memory (RAM) and/or any other storage device or storagedisk in which information is stored for any duration (e.g., for extendedtime periods, permanently, for brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm tangible computer readable storage medium is expressly defined toinclude any type of computer readable storage device and/or storage diskand to exclude propagating signals and to exclude transmission media. Asused herein, “tangible computer readable storage medium” and “tangiblemachine readable storage medium” are used interchangeably. Additionallyor alternatively, the example processes of FIGS. 8 and 9 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a non-transitory computer and/ormachine readable medium such as a hard disk drive, a flash memory, aread-only memory, a compact disk, a digital versatile disk, a cache, arandom-access memory and/or any other storage device or storage disk inwhich information is stored for any duration (e.g., for extended timeperiods, permanently, for brief instances, for temporarily buffering,and/or for caching of the information). As used herein, the termnon-transitory computer readable medium is expressly defined to includeany type of computer readable storage device and/or storage disk and toexclude propagating signals and to exclude transmission media. As usedherein, when the phrase it least is used as the transition term in apreamble of a claim, it is open-ended in the same manner as the term“comprising” is open ended.

The example program of FIG. 8 may be executed to implement the exampleblueprint editor 102 of FIG. 1 to map example services 302 (FIG. 3) toexample service templates 110 (FIGS. 1 and 3). The example program ofFIG. 8 may be used by an administrator 124 (FIG. 1) to generate acatalog of numerous service templates 110 to be stored the servicetemplates repository 112 (FIG. 1) so that developers (e.g., thedeveloper 130 of FIG. 1) can have numerous options of service templates110 from which is select to design application blueprints. The exampleprogram of FIG. 8 begins when the blueprint editor 102 detects ones ofthe services 302 selected to be mapped to a service template 110 (block802). For example, the blueprint editor 102 may use the template mappingoptions GUI 300 of FIG. 3 to detect user selections of the Apache loadbalancer and the F5 load balancer services 302 for mapping to theexample load balancer template 110 a. The example blueprint editor 102then determines configuration properties 111 (FIG. 1) to preconfigurefor the service template 110 a based on the detected services (block804). For example, the blueprint editor 102 may analyze dependencies andattributes of the Apache load balancer and the F5 load balancer services302 to determine which inter-node dependency properties to preconfigureand to determine what attributes the Apache load balancer and the F5load balancer services 302 have in common (e.g., inter-node dependencyproperties and attributes that can be preconfigured with the samevalue(s) in the load balancer template 110 a).

The example blueprint editor 102 configures dependency properties of theconfiguration properties 111 (block 806). In addition, the exampleblueprint editor 102 configures common attributes of the configurationproperties 111 (block 808). For example, the blueprint editor 102 mayuse the template properties definitions GUI 400 of FIG. 4 to obtainvalues to configure the dependency properties and the common attributesas described above in connection with FIG. 4. The example blueprinteditor 102 maps the services 302 and the configuration properties 111 tothe service template 110 (block 810). For example, the blueprint editor102 may associate the Apache load balancer and the F5 load balancerservices 302 and the configuration properties 111 with the load balancerservice template 110 a by storing the Apache load balancer and F5 loadbalancer services 302 and the configuration properties 111 inassociation with or in a field of the load balancer service template 110a. The example blueprint editor 102 stores the service template 110(block 812). For example, the blueprint editor 102 may store the servicetemplate 110 in the service templates repository 112 so that the servicetemplate 110 may be later selected by the developer 130 during a designphase to design an application blueprint (e.g., the applicationblueprint 108) based on the service templates 110 instead of particularservices. The example program of FIG. 8 then ends.

The example program of FIG. 9 may be used to design applicationblueprints (e.g., the application blueprint 108 of FIG. 1) based onservice templates (e.g., the service templates 110 of FIG. 1) at adesign phase 902 (e.g., a development phase) and to select particularservices (e.g., the services 702, 704, 706, 710, 712, 714 of FIG. 7) forapplications (e.g., the applications 114, 116 of FIGS. 1 and 7) atruntime phase 904 when the applications are being deployed. The exampleprogram of FIG. 9 starts at the design phase 902 when the exampleblueprint editor 102 (FIG. 1) obtains nodes for an application blueprint(block 906). For example, the blueprint editor 102 may receive the nodes502, 504, 506 (FIG. 5) (or any other nodes) selected by the developer130 (FIG. 1) to design the application blueprint 108. The exampleblueprint editor 102 obtains one or more selection(s) of one or moreservice template(s) for one or more selected node(s) (block 908), Forexample, the blueprint editor 102 may receive selection(s) of one ormore of the service template(s) 110 a-c selected by the developer 130via the service template panel 510 of FIG. 5. In some examples, thedeveloper 130 may elect to bind service templates 110 to all of thenodes (e.g., the nodes 502, 504, 506 of FIG. 5) of the applicationblueprint 108. In other examples, the developer 130 may elect to bind aservice template 110 to only one or less than all of the nodes (e.g.,the nodes 502, 504, 506 of FIG. 5) of the application blueprint 108. Insome examples, the developer 130 may elect to bind particular servicesto some of the nodes of the application blueprint 108 at the designphase 902. In any case, the blueprint editor 102 detects ones of thenodes that the developer 130 selects for binding to service templates110 and does not bind service templates to nodes not, selected by thedeveloper 130 for binding to a service template.

The example blueprint editor 102 hinds the one or more servicetemplate(s) 110 (obtained at block 908) and their correspondingconfiguration information 111 to one or more corresponding selectednode(s) (block 910). For example, based on the selection(s) of the oneor more service template(s) at block 908, the blueprint editor 102obtains the configuration information 111 napped to the servicetemplate(s) 110 as described above in connection with the program ofFIG. 8 and the template properties definitions GUI 400 of FIG. 4. Theexample blueprint editor 102 then binds the configuration information111 and the service templates 110 a-c to corresponding ones of the nodes502, 504, 506 (block 912) as described above in connection with theservice template binding GUI 500 of FIG. 5. The example blueprint editor102 stores the application blueprint 108 in the blueprint repository 113of FIG. 1 (block 914). In this manner, the application blueprint 108designed during the design phase 902 can be subsequently used one ormore times during the runtime phase 904 to select particular servicesand deploy one or more applications.

After the design phase 902, operations of blocks 916, 918, 920, 922 924,926 are performed during the runtime phase 904 to generate one or moredeployment profiles 120 (FIG. 1) and to deploy one or more applications114, 116 (FIG. 1). In some examples, the runtime phase 904 occursimmediately or shortly after the design phase 902. In other examples,the runtime phase 904 and the design phase 902 are separated by a longerduration. Initially during the runtime phase 904, the example deploymentprofile generator 104 (FIG. 1) receives a selection of an applicationblueprint to generate one or more application deployment profile(s)(block 916). For example, the deployment profile generator 104 mayreceive a user-selection of the application profile 108 stored in theblueprint repository 113 to generate, for example, one or both of theapplication deployment profiles 120 a and 120 b of FIG. 7. The exampledeployment profile generator 104 obtains selection(s) of one or more ofthe service(s) 302 for one or more of the corresponding servicetemplate(s) 110 of the node(s) of the application blueprint 108 (block918). For example, the deployment profile generator 104 may receive theselection(s) of the one or more service(s) 302 a-c via the deploymentprofile configuration GUI 600 of FIG. 6. In the illustrated example, thedeveloper 130 selects the services 302 a-c via the deployment profileconfiguration GUI 600 for corresponding ones of the service templates110 a-c so that the deployment profile generator 104 can bind theselected services 302 a-c to corresponding nodes 502, 504, 506 (FIG. 5)associated with the service templates 110 a-c.

In the illustrated example, the example deployment profile generator 104obtains a deployment environment in which to deploy an application(block 920). For example, the deployment profile generator 104 mayreceive a user-selection from the developer 130 of one of the cloudenvironments 118 a, 118 b of FIG. 1. The example deployment profilegenerator 104 associates the one or more service(s) 302 a-c and thedeployment environment 118 a, 118 b with a deployment profile 120 (block922). The example deployment profile generator 104 stores the deploymentprofile 120 in the deployment profile repository 122 (FIG. 1) (block924). In this manner, the example application deployer 106 cansubsequently retrieve the deployment profile 120 one or more times todeploy one or more instances of an application defined in the deploymentprofile 120. In the illustrated example, the application deployer 106deploys the application defined in the deployment profile 120 (block926). For example, the application deployer 106 uses the informationstored in the deployment profile 120 to deploy, for example, theapplication A 114 in the cloud environment A 118 a as shown in FIG. 1,or the application B 116 in the cloud environment B 118 b as shown inFIG. 1. In the illustrated example, the deployment by the applicationdeployer 106 involves the application deployer 106 communicating theconfiguration properties 111 to the VM 126, 128 in the target cloudenvironment 118 a, 118 b to configure the VM 126, 128 to host theapplication 114, 116. The example program of FIG. 9 then ends.Additionally or alternatively, the application deployer 106 may deployan application based on the deployment profile 120 at a later time afterstoring the deployment profile 120 in the deployment profile repository122.

FIG. 10 is a block diagram of an example processor platform 1000 capableof executing the instructions of FIGS. 8 and 9 to implement the exampleapplication provisioning manager 100 of FIG. 1. The processor platform1000 can be, for example, a server, a personal computer, or any othertype of suitable computing device. The processor platform 1000 of theillustrated example includes a processor 1012. The processor 1012 of theillustrated example is hardware. For example, the processor 1012 can beimplemented by one or more integrated circuits, logic circuits,microprocessors or controllers from any desired family or manufacturer.

The processor 1012 of the illustrated example includes a local memory1013 (e.g., a cache). The processor 1012 of the illustrated example isin communication with a main memory including a volatile memory 1014 anda non-volatile memory 1016 via a bus 1018. The volatile memory 1014 maybe implemented by Synchronous Dynamic Random Access Memory (SDRAM),Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory(RDRAM) and/or any other type of random access memory device. Thenon-volatile memory 1016 may be implemented by flash memory and/or anyother desired type of Memory device. Access to the main memory 1014,1016 is controlled by a memory controller.

The processor platform 1000 of the illustrated example also includes aninterface circuit 1020. The interface circuit 1020 may be implemented byany type of interface standard, such as an Ethernet interface, auniversal serial bus (USB), and/or a PCI express interface.

In the illustrated example, one or more input devices 1022 are connectedto the interface circuit 1020. The input device(s) 1022 permit(s) a userto enter data and commands into the processor 1012. The input device(s)can be implemented by, for example, an audio sensor, a microphone, acamera (still or video), a keyboard, a button, a mouse, a touchscreen, atrack-pad, a trackball, isopoint and/or a voice recognition system.

One or more output devices 1024 are also connected to the interfacecircuit 1020 of the illustrated example. The output devices 1024 can beimplemented, for example, by display devices (e.g., a light emittingdiode (LED), an organic light emitting diode (OLED), a liquid crystaldisplay, a cathode ray tube display (CRT) a touchscreen, a tactileoutput device, a light emitting diode (LED), a printer and/or speakers).The interface circuit 1020 of the illustrated example, thus, typicallyincludes a graphics driver card a graphics driver chip or a graphicsdriver processor.

The interface circuit 1020 of the illustrated example also includes acommunication device such as a transmitter, a receiver, a transceiver, amodem and/or network interface card to facilitate exchange of data withexternal machines (e.g., computing devices of any kind) via a network1026 (e.g., an Ethernet connection, a digital subscriber line (DSL), atelephone line, coaxial cable, a cellular telephone system, etc.).

The processor platform 1000 of the illustrated example also includes oneor more mass storage devices 1028 for storing software and/or data.Examples of such mass storage devices 1028 include floppy disk drives,hard drive disks, compact disk drives, Blu-ray disk drives. RAIDsystems, and digital versatile disk (DVD) drives.

Example coded instructions 1032 of the illustrated example include theexample machine readable instructions of FIGS. 8 and 9. The examplecoded instructions 1032 may be stored in the mass storage device 1028,in the volatile memory 1014, in the non-volatile memory 1016, and/or ona removable tangible computer readable storage medium such as a CD orDVD.

From the foregoing, it will be appreciated that the above disclosedmethods, apparatus and articles of manufacture enable configuringapplication blueprints in a flexible manner based on service templatessuch that the application blueprints do not need to be fixedly bound toparticular services at a design phase. As such, developers are providedwith flexibility during a runtime phase to generate applicationdeployment profiles based on selectability of numerous services duringthe runtime phase. In this manner, a developer can design and test anapplication blueprint during a development phase, and can use the sametested application blueprint during a runtime phase to deploy anapplication. Such use of a single blueprint for use during a developmentphase and a runtime phase provides numerous advantages. An exampleadvantage is that a blueprint that is tested and approved in adevelopment cloud environment can be used to deploy an application in aproduction cloud environment with assurances of how the blueprint willoperate when deploying the application since it has been previously usedand tested numerous times during development. Another example advantageis that developers do not have to develop, update, maintain, and testmultiple separate blueprints for numerous applications that differ inthe types of services bound to each application. Such updating andmaintaining separate blueprints can be tedious, time consuming, anderror prone because a developer must be certain that all aspects thatare common to the blueprints are updated in the same manner across allblueprints. In addition, the developer must test all of the blueprintswhen any change is made to the common aspects. Using examples disclosedherein to develop blueprints using service: templates that allow bindingdifferent services to different aspects of an application at runtimeallow a developer to develop, update, maintain, and test a singleblueprint, thereby reducing time, resources, and possibilities of errorswhen developing, deploying, and maintaining applications.

Although certain example methods, apparatus and articles of manufacturehave been disclosed herein, the scope of coverage of this patent is notlimited thereto. On the contrary, this patent covers all methods,apparatus and articles of manufacture fairly falling within the scope ofthe claims of this patent.

1. A method to configure an application blueprint, the methodcomprising: during a design phase, binding, a service template to a nodeof the application blueprint, the application blueprint defining anapplication to be deployed in a cloud environment_(:) and the servicetemplate being mapped to a plurality of services that are selectableduring a runtime phase to implement the node in the cloud environment;and during the runtime phase: binding a first one of the services to thenode of the application blueprint based on the first one of the servicesbeing mapped to the service template and being selected during theruntime phase; and generating an application deployment profile based onthe binding of the first one of the services to the node.
 2. A method asdefined in claim 1, wherein the first one of the services is mapped tothe service template prior to the design phase, the mapping of the firstone of the services to the service template prior to the design phasebeing indicative of the first one of the services being selectableduring the runtime phase for binding to the node associated with theservice template.
 3. A method as defined in claim 1, further comprisingassociating configuration properties with the application deploymentprofile, the configuration properties including dependency properties toconfigure inter-node dependencies between the node and other nodes ofthe application blueprint.
 4. A method as defined in claim 1 furthercomprising deploying the application in a cloud environment based onconfiguring a virtual machine to host the application usingconfiguration properties associated with the service template.
 5. Amethod as defined in claim further comprising storing the applicationblueprint during the design phase, and using the application blueprintduring a runtime phase to: generate a first deployment profile to deploya first application based on a first service selected based on theservice template to implement the node; and generate a second deploymentprofile to deploy a second application based on second service,different from the first service, based on the service template toimplement the node.
 6. A method as defined in claim 1, wherein theservice template is preconfigured prior to the design phase to includedependency properties defining inter-node dependencies between the nodeand other nodes.
 7. A method as defined in claim wherein the servicetemplate is preconfigured prior to the design phase to include values ofproperties that are configured to be the same for the plurality of theservices that are selectable during the runtime phase to implement thenode in the cloud environment.
 8. An apparatus to configure anapplication blueprint, the apparatus comprising: a memory comprisingmachine readable instructions; and a processor to execute theinstructions to at least: during a design phase, bind a service templateto a node of the application blueprint, the application blueprintdefining an application to he deployed in a cloud environment, and theservice template being mapped to a plurality of services that areselectable during a runtime phase to implement the node in the cloudenvironment; during the runtime phase: bind a first one of the servicesto the node of the application blueprint based on the first one of theservices being mapped to the service template and being selected duringthe runtime phase; and generate an application deployment profile basedon the binding of the first one of the services to the node.
 9. Anapparatus as defined in claim 8, wherein the first one of the servicesis mapped to the service template prior to the design phase, the mappingof the first one of the services to the service template prior to thedesign phase being indicative of the first one of the services beingselectable during the runtime phase for binding to the node associatedwith the service template.
 10. An apparatus as defined in claim 8,wherein the instructions further cause the processor to associateconfiguration properties with the application deployment profile, theconfiguration properties including dependency properties to configureinter-node dependencies between the node and other nodes of theapplication blueprint.
 11. An apparatus as defined in claim 8, whereinthe instructions further cause the processor to deploying theapplication in a cloud environment based on configuring a virtualmachine to host the application using configuration propertiesassociated with the service template.
 12. An apparatus as defined inclaim 8, wherein the instructions further cause the processor to storethe application blue-print during the design phase, and use theapplication blueprint during a runtime phase to: generate a firstdeployment profile to deploy a first application based on a firstservice selected based on the service template to implement the node;and generate a second deployment profile to deploy a second applicationbased on a second service, different from the first service, based onthe service template to implement the node.
 13. An apparatus as definedin claim 8, wherein the service template is preconfigured prior to thedesign phase to include dependency properties defining inter-nodedependencies between the node and other nodes.
 14. An apparatus asdefined in claim 8, wherein the service template is preconfigured priorto the design phase to include values of properties that: are configuredto be the same for the plurality of the services that are selectableduring the runtime phase to implement the node in the cloud environment.15. A non-transitory computer readable storage medium comprisinginstructions that, when executed, cause a processor to at least: duringa design phase, bind a service template to a node of an applicationblueprint, the application blueprint defining an application to bedeployed in a cloud environment, and the service template being mappedto a plurality of services that are selectable during a runtime phase toimplement the node in the cloud environment; and during the runtimephase: bind a first one of the services to the node of the applicationblueprint based on the first one of the services being mapped to theservice template and being selected during the runtime phase; andgenerate an application deployment profile based on the binding of thefirst one of the services to the node.
 16. A non-transitory computerreadable storage medium as defined in claim 15, wherein the first one ofthe services is mapped to the service template prior to the designphase, the mapping of the first one of the services to the servicetemplate prior to the design phase being indicative of the first one ofthe services being selectable during the runtime phase for binding tothe node associated with the service template.
 17. A non-transitorycomputer readable storage medium as defined in claim 15, wherein theinstructions further cause the processor to associate configurationproperties with the application deployment profile, the configurationproperties including dependency properties to configure inter-nodedependencies between the node and other nodes of the applicationblueprint.
 18. A non-transitory computer readable storage medium asdefined in claim 15, wherein the instructions further cause theprocessor to deploy the application in a cloud environment based onconfiguring a virtual machine to host the application usingconfiguration properties associated with the service template.
 19. Anon-transitory computer readable storage medium as defined in claim 15,wherein the instructions further cause the processor to store theapplication. blueprint during the design phase, and using theapplication blueprint during a runtime phase to: generate a firstdeployment profile to deploy a first application based on a firstservice selected based on the service template to implement the node;and generate a second deployment profile to deploy a second applicationbased on a second service, different from the first service, based onthe service template to implement the node.
 20. A non-transitorycomputer readable storage medium as defined in claim 15, wherein theservice template is preconfigured prior to the design phase to includedependency properties defining inter-node dependencies between the nodeand other nodes.
 21. A non-transitory computer readable storage mediumas defined in claim 15, wherein the service template is preconfiguredprior to the design phase to include values of properties that areconfigured to be the same for the plurality of the services that areselectable during the runtime phase to implement the node in the cloudenvironment.